In known video transmission/reception systems, data content from a digital media server is encoded and sent to be decoded for playback on a digital media renderer. Video content, however, can be quite complex as it changes over time. As complexity changes, so does the bit rate needed for quality transmission of the content. For a given compression quality level, complexity of the video data results in a higher bit rate for encoding the data. The capacity of the network, however, may remain constant over time and does not change due to the complexity of the video data or increased bit rate.
To accommodate this bit rate fluctuation at the video encoder, rate control is used to create a constant bit rate on a network at all times. The constant bit rate remains in effect for the transmission of data even when the complexity of the video changes dramatically, such as when a scene changes or the video captures a lot of motion or fine features. Rate control strives to keep the video playback quality as stable as possible. Rate control tries to compromise between quality stability and constant bit rate requirements.
Known systems buffer the data prior to transmission due to the limits of the rate control and to meet the constraints applied by the capacity of the network. The encoded data is buffered so that the instantaneous video encoder bit rate can be higher and lower than the capacity of the network, but the rate of the buffered data sent to the network always equals or is lower than the network capacity. As the bit rate may increase substantially over the network capacity, known systems implement larger buffers to accommodate those possible large increases. The larger buffers, however, introduce latency into the transmission of the data, such that delays occur.
For example, a known system may buffer a plurality of frames after encoding before transmitting the data across the network. A large buffer size results in high latencies within the system. In some applications, this latency is unacceptable. Real-time video playback and interactive applications may not incur high latencies, and, therefore, cannot just increase buffer size to handle complex video transmissions. In fact, some applications may not allow any noticeable latency in the network. Thus, buffer size may be minimized to reduce the latency but then the system may not be able to handle the increased bit rate fluctuations due to the complex data.